// pages/fm_hdx/fm_hdx.js
import request from '../../utils/request'; 
Page({

  /**
   * 页面的初始数据
   */
  data: {
    tabs: [],
      activeTab: 0, // 当前选中的 Tab 索引
      allArticles: [],  // 存储全量数据
      filteredArticles: [], // 当前展示数据
      groupedArticles: [],  // 新增分组后的数据
      loading: true,
      categoryLoading: true // 新增分类加载状态
  },
  onClickLeft(){
    wx.navigateBack();
  },
  loadCategories() {
    this.setData({ categoryLoading: true });
    request(
      '/articleCategory/search',
      'GET',
      {
       title:''
      },
      (res) => {
        if (res.data?.code === 1) {
          const validCategories = res.data.data.rows
            .filter(item => item.del === 1) // 过滤已删除分类
            .map(item => ({
              title: item.categoryName,
              categoryId: item.id
            }));
          this.setData({
            tabs: validCategories,
            categoryLoading: false
          }, () => {
            // 分类加载完成后加载文章
            this.loadAllData();
          });
        } else {
            console.error('分类接口返回异常:', res);
          this.handleError('分类加载失败');
        }
      },
      (err) => {
        console.error('分类请求失败:', err);
        this.handleError('分类加载失败');
        this.setData({ categoryLoading: false });
      }
    );
  },

  // 修改后的加载文章方法
  loadAllData() {
    if (this.data.tabs.length === 0) {
        console.warn('分类数据为空，终止加载');
        return;
      }

    this.setData({ loading: true });
    request(
      '/fm/search',
      'GET',
      {},
      (res) => {
        if (res.data?.code === 1) {
          const processedData = this.processResponseData(res.data.data.rows);
          const filtered = this.filterByCategory(processedData);
          this.setData({
            allArticles: processedData,
            filteredArticles: filtered,
            groupedArticles: this.groupData(filtered),
            loading: false
          }, () => {
            console.log('页面数据已更新');
          });
        } else {
            console.error('文章接口返回异常:', res);
          this.handleError('数据加载失败');
        }
      },
      (err) => {
        console.error('文章请求失败:', err);
        this.handleError('网络连接失败');
      }
    );
  },


  // 处理接口返回数据
  processResponseData(rows) {
    return rows.map(item => ({
      id: item.id,
      title: item.title,
      coverImage: item.coverImage || '/images/default-cover.png',
      categoryId: item.categoryId,
      categoryName: item.articleCategory?.categoryName || '未知分类',
      createTime: item.createTime,
      audioUrl: item.audioUrl
    }));
  },

  // 分类过滤方法
  filterByCategory(list) {
    if (!list || !list.length) return [];
    const activeTab = Math.min(this.data.activeTab, this.data.tabs.length - 1);
    const currentCategoryId = this.data.tabs[activeTab]?.categoryId;
    
    return list.filter(item => 
      item.categoryId === currentCategoryId
    );
  },

  // 数据分组方法（优化空数据兼容）
  groupData(arr) {
    if (!arr) return [];
    const grouped = [];
    const chunkSize = 3;
    for (let i = 0; i < arr.length; i += chunkSize) {
      grouped.push(arr.slice(i, i + chunkSize));
    }
    return grouped;
  },
  // Tab切换事件
  onTabChange(e) {
    const index = e.detail.index;
    this.setData({ activeTab: index }, () => {
      // 确保状态更新后执行过滤
      const filtered = this.filterByCategory(this.data.allArticles);
      this.setData({
        filteredArticles: filtered,
        groupedArticles: this.groupData(filtered)
      });
    });
  },

  // 错误处理
  handleError(msg) {
    this.setData({ loading: false });
    wx.showToast({
      title: msg,
      icon: 'none',
      duration: 2000
    });
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    this.loadCategories(); // 改为先加载分类
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})